package valid

import (
	"strings"
	"unicode"

	"gitee.com/gousing/helper/internal/emoji"
)

// HasASCII 字符串中是否包含ASCII字符或符号
func HasASCII(val string) bool {
	for _, v := range val {
		if v <= 0x7F {
			return true
		}
	}
	return false
}

// IsASCII 字符串是是否全部都为ASCII字符或符号
func IsASCII(val string) bool {
	for _, v := range val {
		if v > 0x7F {
			return false
		}
	}
	return true
}

// HasChinese 判断字符串中是否含中文
func HasChinese(s string) bool {
	if len(s) < 1 {
		return false
	}
	for _, v := range s {
		if unicode.Is(unicode.Han, v) {
			return true
		}
	}
	return false
}

// IsChinese 判断字符串是否全部都为中文
func IsChinese(s string) bool {
	if len(s) < 1 {
		return false
	}
	for _, v := range s {
		if !unicode.Is(unicode.Han, v) {
			return false
		}
	}
	return true
}

// 判断字符串中是否含表情符号
func HasEmoji(s string) bool {
	if len(strings.TrimSpace(s)) < 1 {
		return false
	}
	for i := range s {
		match, _ := emoji.AllSequences.HasEmojiPrefix(s[i:])
		if match {
			return true
		}
	}
	return false
}

// 判断字符串是否全部为表情符号
func IsEmoji(s string) bool {
	if len(strings.TrimSpace(s)) < 1 {
		return false
	}
	for i := range s {
		match, _ := emoji.AllSequences.HasEmojiPrefix(s[i:])
		if !match {
			return false
		}
	}
	return true
}
